home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / art&graf.ix / art-0015 / flicker / sqr_root.c < prev    next >
Text File  |  1997-04-16  |  742b  |  46 lines

  1.  
  2. /*
  3. ** Sqr_root() - Return the integer square root the the long integer i
  4. */
  5.  
  6. int
  7. sqr_root(i)
  8. register long    i;
  9. {
  10.     register unsigned long    mask;
  11.     register long t;
  12.     register unsigned short    result;
  13.     register long        lt;
  14.  
  15.     /*
  16.     ** Approximate starting mask value
  17.     */
  18.  
  19.     for (mask = 1, lt = i; mask < lt; mask <<= 1, lt >>= 1)
  20.     ;
  21.  
  22.     result = 0;
  23.  
  24.     while (mask)
  25.     {
  26.     t = result | mask;
  27.     if ((t * t) <= i)
  28.         result = t;
  29.     mask >>= (unsigned int)1;
  30.     }
  31.  
  32.     return ((int)result);
  33. }
  34.  
  35. calc_distance(x1,y1,x2,y2)
  36. short x1,y1,x2,y2;
  37. {
  38. register long delta_x, delta_y;
  39.  
  40. delta_x = x1 - x2;
  41. delta_y = y1 - y2;
  42.  
  43. return(sqr_root( (long)(delta_x*delta_x) + (long)(delta_y*delta_y)));
  44. }
  45.  
  46.